MySQL之数据查询(分类汇总与排序) 您所在的位置:网站首页 关于分类汇总 MySQL之数据查询(分类汇总与排序)

MySQL之数据查询(分类汇总与排序)

2024-06-10 03:07| 来源: 网络整理| 查看: 265

1、GROUP BY子句

        GROUP BY子句主要用于根据字段对行分组。例如,根据学生所学的专业对学生基本表中的所有行分组,结果是每个专业的学生成为一组。

语法格式:GROUP BY[ 列名 ] [ ASC | DESC ],...[ WITH ROLLUP ]

 GROUP BY可以根据一个或多个列进行分组,也可以根据表达式进行分组,经常和聚合函数一起使用。

例:输出Book表中图书类别名

SELECT 图书类别 FROM Book GROUP BY 图书类别;

 例:按图书类别统计Book表中各类图书的库存数

SELECT 图书类别,COUNT(*)AS '库存数' FROM Book GROUP BY 图书类别;

 使用带ROLLUP操作符的GROUP BY子句,指定在结果集内不包含由GROUP BY提供的正常行,还包括汇总行。

例:按图书类别、出版社分类统计Book表中各类图书的库存数,并进行分类小计

SELECT 图书类别,出版社,Sum(数量)AS '库存数' FROM Book GROUP BY 图书类别,出版社 WITH ROLLUP;

 2、HAVING子句

        使用HAVING子句的目的与WHERE子句类似,不同的是WHERE子句是用来在FROM子句之后选择行,而HAVING子句用来在GROUP BY子句后选择行。

        语法格式:HAVING 条件

        SQL标准要求HAVING必须引用GROUP BY子句中的列或用于聚合函数中的列。不过,MySQL支持对此工作性质的扩展,并允许HAVING引用SELECT清单中的列和外部子查询中的列。

例:查找Sell表中每个会员平均订购册数在10本以上的会员的身份证号和平均订购册数。 

SELECT 身份证号,AVG(订购册数)AS '平均订购册数' FROM Sell GROUP BY 身份证号 HAVING AVG(订购册数)>10;

 3、ORDER BY子句

        在一条SELECT语句中,若不使用ORDER BY子句,结果中的行的顺序是不可预料的。使用ORDER BY子句后可以保证结果中的行按一定顺序排列。

语法格式:ORDER BY{列名 | 表达式 | 列编号}[ ASC | DESC ],...

        关键字ASC表示升序排列,DESC表示降序排列,系统默认值为ASC

例:将Book表中记录按出版时间先后排序 

SELECT * FROM Book ORDER BY 出版时间;

 例:将Sell表中记录按订购册数从高到底排列

SELECT * FROM Sell ORDER BY 订购册数 DESC;

 4、LIMIT子句

        LIMIT子句是SELECT语句的最后一个子句,主要用于限制被SELECT语句返回的行数

语法格式:LIMIT{ [ 偏移量,]行数 | 行数OFFSET 偏移量}

例如,LIMIT 5表示返回SELECT语句的结果集中最前面5行,而LIMIT 3,5则表示从第4行开始返回5行。

例:查找Members表中注册时间最靠前的5位会员的信息 

SELECT * FROM Members ORDER BY 注册时间 LIMIT 5;

 当初始化不是从头开始时,要使用两个参数LIMIT偏移量,行数,值得注意的是初始行的偏移量为0而不是1。

例:查找Book表中从第4条记录开始的5条记录

SELECT * FROM Book ORDER BY 学号 LIMIT 3,5;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有